From 5af86df1372e38f223c2b2c20d0871d76e4f148d Mon Sep 17 00:00:00 2001 From: robertl Date: Wed, 22 Jan 2003 03:12:46 +0000 Subject: [PATCH] Add xrealloc, xstrappend. Fix typo in be_read16. --- defs.h | 2 ++ util.c | 37 +++++++++++++++++++++++++++++++++++-- 2 files changed, 37 insertions(+), 2 deletions(-) diff --git a/defs.h b/defs.h index f836cec31..1c9fe09d0 100644 --- a/defs.h +++ b/defs.h @@ -217,6 +217,8 @@ void printposn(const coord *c, int is_lat); void *xcalloc(size_t nmemb, size_t size); void *xmalloc(size_t size); char *xstrdup(const char *s); +char *xstrappend(char *src, const char *new); + void rtrim(char *s); signed int get_tz_offset(void); diff --git a/util.c b/util.c index 3e64373c8..2ea444037 100644 --- a/util.c +++ b/util.c @@ -60,6 +60,39 @@ xstrdup(const char *s) return o; } +void * +xrealloc(void *p, size_t s) +{ + char *o = realloc(p,s); + + if (!o) { + fatal("gpsbabel: Unable to realloc %d bytes of memory.\n", s); + } + + return o; +} + +/* +* For an allocated string, realloc it and append 's' +*/ +char * +xstrappend(char *src, const char *new) +{ + size_t newsz; + + if (!src) { + return(xstrdup(new)); + } + + newsz = strlen(src) + strlen(new) + 1; + src = xrealloc(src, newsz); + strcat(src, new); + + return src; +} + + + void rtrim(char *s) { @@ -129,8 +162,8 @@ be_read32(void *p) signed int be_read16(void *p) { - char *i = (char *) p; - return i[0] << 8 | i[0]; + unsigned char *i = (unsigned char *) p; + return i[0] << 8 | i[1]; } void -- 2.30.2